package com.hua.designpattern.behavioral.iterator;

import java.util.Arrays;

/**
 * 
 * @author joshua
 *
 *         <pre>
 *
 *  迭代器模式（Iterator Pattern）是 Java 和 .Net 编程环境中非常常用的设计模式。
 *  这种模式用于顺序访问集合对象的元素，不需要知道集合对象的底层表示。
 *  
 *  优点： 
 *  	1、它支持以不同的方式遍历一个聚合对象，在同一个聚合上可以有多个遍历。
 *  	2、迭代器简化了聚合类。 
 *  	3、在迭代器模式中，增加新的聚合类和迭代器类都很方便，无须修改原有代码。
 *  缺点：
 *  	由于迭代器模式将存储数据和遍历数据的职责分离，增加新的聚合类需要对应增加新的迭代器类，类的个数成对增加，这在一定程度上增加了系统的复杂性。
 *
 *         </pre>
 *
 *
 */
public class TestIterator {
	public static void main(String[] args) {
		String[] addValues = new String[] { "value1", "value2", "value3", "values" };
		ContainerInterface containerArray = new ContainerArray(addValues);
		System.out.println(containerArray);
		IteratorInterface arrayItr = containerArray.getIterator();
		while (arrayItr.hasNext()) {
			System.out.println(arrayItr.next());
		}

		ContainerInterface containerList = new ContainerList(Arrays.asList(addValues));
		System.out.println(containerList);
		IteratorInterface listItr = containerList.getIterator();
		while (listItr.hasNext()) {
			System.out.println(listItr.next());
		}
	}
}
